package implementacao;

import static implementacao.Constantes.*;

public class Retorno {

	private int[] retorno;
	
	public Retorno(int[] retorno){
		this.retorno = retorno;
	}

	public Retorno() {
		retorno = new int[] {VAZIO, VAZIO, VAZIO, VAZIO};
	}

	public void set(int idx, int pino) {
		retorno[idx] = pino;
	}

	public int get(int idx) {
		return retorno[idx];
	}

	public void swap(int idx1, int idx2) {
		int tmp = retorno[idx1];
		retorno[idx1] = retorno[idx2];
		retorno[idx2] = tmp;
	}
	
	@Override
	public boolean equals(Object obj) {
		Retorno r = (Retorno) obj;
		if (obj == null) {
			return false;
		}
		if (this.getSize() != r.getSize()) {
			return false;
		}
		for (int i = 0; i < this.getSize(); ++i) {
			if (this.get(i) != r.get(i)) {
				return false;
			}
		}
		return true;
	}
	
	@Override
	public String toString() {
		String s = "";
		for (int i = 0; i < getSize(); ++i) {
			switch (retorno[i]) {
			case BRANCO:
				s += "B ";
				break;
			case PRETO:
				s += "P ";
				break;
			case VAZIO:
				s += "_ ";
				break;
			default:
				s += "Erro ";
			}
		}
		return s;
	}

	public int getSize() {
		return retorno.length;
	}

	public boolean acertouTodasCoresPosicoes() {
		for (int i = 0; i < retorno.length; ++i) {
			if (retorno[i] != PRETO) {
				return false;
			}
		}
		return true;
	}
}
